C语言fseek()、ftell()、rewind()函数 |
您所在的位置:网站首页 › c rewind函数 › C语言fseek()、ftell()、rewind()函数 |
这三个函数的功能是对文件流的位置指针进行定位,方便文件的读写操作;例如打开文件写入内容后,这时文件指针在末尾后一个字节,若需直接读出内容,可以选择关闭文件重新打开,这样文件指针重新指向文件首部,但这样来回打开关闭文件容易出错,可以使用fseek()函数对文件位置指针进行重定位,重新将指针定位到文件首部。 注意!!! 这里所说的“指针”并不是文件流指针,而是文件内部的位置指针;随着对文件的读写操作,文件的位置指针向后移动(指向当前读写字节),文件关闭后指针自动指向文件首部。文件流指针指向整个文件,不重新赋值指向不会改变。 fseek()函数函数原型 #include int fseek(FILE *stream, long offset, int whence);rewind()函数、fseek()函数以及ftell()函数都在标准IO库中,fseek()中stream表示文件流指针,whence表示想要定位的位置,offset表示偏移量,根据whence的位置需要移动的字节数,可正可负,正数表示正向偏移,负数表示反向偏移。fseek()可以设定访问文件的读写位置,可以以任意顺序访问文件的位置,从而实现文件的随机访问。 whence的常量描述: 常量数值描述SEEK_SET0文件首部SEEK_CUR1文件指针当前位置SEEK_END2文件尾部 SEEK_SET表示文件指针从文件首部偏移offset个字节(offset不能是负数),只能正向偏移SEEK_CUR表示文件指针从当前位置偏移offset个字节SEET_END表示文件指针从文件末尾偏移offset个字节(offset不能为正数),只能负向偏移 fseek(fp,0L,SEEK_SET); //定位到文件首部 fseek(fp,100,SEEK_SET); //定位到文件首部向后偏移100字节 fseek(fp,-100,SEEK_CUR); //定位到当前位置向前100字节 fseek(fp,0L,SEEK_END); //定位到文件尾部 fseek(fp,-50,SEEK_END); //定位到文件尾部向前50字节fseek 函数只返回执行的结果是否成功,成功返回0,失败返回-1,并不返回文件的读写位置。 rewind()函数函数原型 #include void rewind(FILE *stream);rewind()函数中steam表示一个文件流指针,是将steam所指向文件的位置指针重新定位到文件首部,这个函数只能实现这一个功能;根据函数的原型,可以发现该函数的返回值为空,则无法判断其是否成功,也可以理解为该函数不会失败;因此在使用中最好使用fseek()函数进行替代。 rewind(fp); 等价于 fseek(fp,0L,SEEK_SET); ftell()函数函数原型 #include long ftell(FILE *stream);ftell()函数的参数与rewind()函数相同,是一个文件流指针,ftell()函数获取当前位置指针所在的字节数,返回值是长整型。在实际读写文件中,文件位置将会频繁的随意移动,到最后不知道位置指针指向哪里,就可以利用ftell()函数得到当前位置指针的位置,下面写一段代码,利用fseek()和ftell()获取文件的大小。 #include #include int main() { FILE *fp=NULL; fp=fopen("文件位置及名称“,"r"); //以只读形式打开文件 if(fp==NULL) { perror("fopen()"); exit(1); } fseek(fp,0L,SEEK_END); //将文件位置指针指向文件末尾 printf("File size is %ld.\n",ftell(fp); //长整型 exit(0); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |